<?php
/*
用户权限管理，查看用户是否拥有某个权限
其他控制器，如果需要用到判断登录状态，都可以继承这个控制器：
class IndexController extends CommonController
*/

namespace Home\Controller;
use Think\Controller;


class CommonController extends Controller {
       //public $auth;
       private $_node = array(); 

	   public function _initialize () {
        //如果没有登录，跳转登录页面
        if(!isset($_SESSION['id'])){ 
            $this->redirect("Home/Login");
        }

        // 权限验证类
        $auth = new \Think\Auth();
        // 当前要验证的控制器与动作方法规则，规则名要唯一
        $module_name = CONTROLLER_NAME.'-'.ACTION_NAME;
       // 拥有超级管理员的规则，就有了所有权限
        if($auth->check('admin', session('id'))){ // 第一个参数是规则名称,第二个参数是用户UID
           return true;
        }

        // 验证用户权限
        // 内部操作了：从权限表中获取当前用户权限。如果session中有，直接返回；如果没有，不管属于几个用户组，取出后对规则id进行唯一化处理后放入session中。_AUTH_LIST_11:第一个1是当前用户id，第二个1是规则表中的type字段（如果type为1， condition字段就可以定义规则表达式。）；
        // 第一个参数是规则名称,第二个参数是用户UID
        if(!$auth->check("$module_name,ismanager", session('id'), 1, 'url', 'or')){             
            $data['msg'] =  '你没有权限=='.$module_name;
            $data['success'] = false;
            $this->ajaxReturn($data);
       }
       /*
               $authList = $this->getAuthList($uid,$type); //获取用户需要验证的所有有效规则列表
        var_dump($authList);die;
          0 => string 'area' (length=4)
  1 => string 'area-area' (length=9)
  2 => string 'msg' (length=3)
  3 => string 'user' (length=4)
  4 => string 'areaselect' (length=10)
  5 => string 'checkcontent' (length=12)
  6 => string 'replymsg' (length=8)
  7 => string 'removemsg' (length=9)
  8 => string 'uploadphoto' (length=11)
  9 => string 'update' (length=6)
  10 => string 'find' (length=4)
  11 => string 'apply' (length=5)
       */
    }	
}
